package login;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

@WebServlet("/login")
public class LoginServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 1. 读取请求传来的数据(用户名和密码)
        // 最好先设置一下字符集,否则如果usename是中文的话,此处 getParameter 可能会乱码
        req.setCharacterEncoding("utf8");
        String usename = req.getParameter("usename");
        String password = req.getParameter("password");

        // 2.验证用户名密码,是否是正确的,一般来说,验证用户名和密码是要通过数据库的
        // 此处为了简单一点,使用固定的用户名和密码的方式,比如此处假设用户名是zhangsan 密码是 123

        // 此处还需要注意,如果getParameter拿到的值时null,为了避免空指针异常,下面这种比较方式是更合适的写法
        if(!"zhangsan".equals(usename) || !"123".equals(password)){
            // 登录失败
            // 给用户返回一个提示
            resp.setContentType("text/html; charset=utf8");
            resp.getWriter().write("用户名或密码错误");
            return;
        }

        // 3.登录成功了,给用户创建一个会话出来
        // 在会话中可以保存一些自定义的数据,通过Attribute的方式来保存
        HttpSession session = req.getSession(true);
        // 此处Attribute 也是键值对,这里的内容存储什么都可以,是程序员自定义的
        // 这样的数据存储好之后,后续跳转到其他页面,也是随时可以把这里的数据从会话中取出来的
        session.setAttribute("usename",usename);
        session.setAttribute("loginTime",System.currentTimeMillis());

        // 4.此处相当于登录成功,让页面跳转到网站首页
        resp.sendRedirect("index");
    }
}
